
package GUI;

import controladoresJPA.ConnectionFactory;
import controladoresJPA.FacturaJpaController;
import controladoresJPA.ProductoJpaController;
import entregapersistencia.Cliente;
import entregapersistencia.Factura;
import entregapersistencia.Producto;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.*;

/**
 * @author Hern&aacute;ndez Abahonza Diana Carolina 1031083
 * @author L&oacute;pez Juan Camilo
 * @author Moncada Mu&nacute;oz Juan David
 */
public class PanelFacturacion extends JPanel implements ActionListener {
    
    private JLabel lFacturacion;
    private ArrayList<JLabel> lDatosEncabezado;
    private ArrayList<JLabel> lDatosFinFactura;
    private ArrayList<JTextField> tfDatosEncabezado;
    private ArrayList<String> stDatosFactura;
    private ArrayList<JTextField> tfFinFactura;
    private JButton bFacturar;
    ConnectionFactory fabrica;
    FacturaJpaController controlador;
    Factura factura;
    Cliente cliente;
    
    private TablaFacturacion tf;
    
    public PanelFacturacion(){
        this.setLayout(new BorderLayout(5,0));//ec, ef
	
	inicializarComponentes();
	organizarComponentes();
    }
    
    private void inicializarComponentes() {
        lFacturacion = new JLabel("Facturación", new ImageIcon("images/invoice-24x24.png"), SwingConstants.LEFT);
	lFacturacion.setFont(new Font("Arial", Font.BOLD, 18));
	lFacturacion.setForeground(new Color(78,79,99,190));
                
        lDatosEncabezado = new ArrayList<JLabel>();
        lDatosEncabezado.add( new JLabel( "Número Factura:" ) );
        lDatosEncabezado.add( new JLabel( "Nit Empresa:" ) );
        lDatosEncabezado.add( new JLabel( "Código Almacén:" ) );
        lDatosEncabezado.add( new JLabel( "Id Terminal Venta:" ) );
        lDatosEncabezado.add( new JLabel( "Código Cajero:" ) );
        lDatosEncabezado.add( new JLabel( "Fecha:" ) );
        lDatosEncabezado.add( new JLabel( "Hora:" ) );
        lDatosEncabezado.add( new JLabel( "Id Cliente" ) );
        lDatosEncabezado.add( new JLabel( "Tipo Id Cliente" ) );
        
        tfDatosEncabezado = new ArrayList<JTextField>();
        stDatosFactura = new ArrayList<String>();
        
        fabrica = new ConnectionFactory();
        controlador = new FacturaJpaController(fabrica.getFactory());
        factura = new Factura();
        
        for (int i=0; i<lDatosEncabezado.size(); i++) {
            lDatosEncabezado.get(i).setFont(new Font("Arial", Font.BOLD, 14));
            lDatosEncabezado.get(i).setForeground(new Color(78,79,99,190));
            tfDatosEncabezado.add( new JTextField( "" ) );
            if(i!=(lDatosEncabezado.size()-1)){
                tfDatosEncabezado.get(i).setEditable(false);
            } else {
                tfDatosEncabezado.get(i).setEditable(true);
            }
        }
        
        lDatosFinFactura = new ArrayList<JLabel>();
        lDatosFinFactura.add( new JLabel( "Subtotal:" ) );
        lDatosFinFactura.add( new JLabel( "IVA:" ) );
        lDatosFinFactura.add( new JLabel( "Total:" ) );
        
        tfFinFactura = new ArrayList<JTextField>();
        
        for (int i=0; i<lDatosFinFactura.size(); i++) {
            lDatosFinFactura.get(i).setFont(new Font("Arial", Font.BOLD, 14));
            lDatosFinFactura.get(i).setForeground(new Color(78,79,99,190));
            
            tfFinFactura.add( new JTextField( "" ) );
            tfFinFactura.get(i).setEditable(false);
        }
        
        bFacturar = new JButton("Crear");
        configurarBoton(bFacturar);
        
        ArrayList<String> names;
        names = new ArrayList<String>();
        names.add("Cod. Producto");
        names.add("Nombre");
        names.add("Precio Unidad");
        names.add("Cantidad");
        names.add("Subtotal");
        
        tf = new TablaFacturacion(names);
    }

    private void configurarBoton(JButton boton){
        boton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
	boton.setRolloverEnabled(false); // Quita la iluminacion al pasar el mouse por el boton 
	//boton.setBorderPainted(false); // Quita el borde del boton
	boton.setBackground(new Color(0,0,0,0)); // Fondo Transparente
	boton.addActionListener(this); // Escucha del boton
    }

    private void organizarComponentes() {
        /* ****************** Parte Norte Pestanna */
        JPanel pTitulo = new JPanel();
	pTitulo.setBackground(new Color(0,0,0,0));
	pTitulo.add(lFacturacion);
        
        JPanel pEncabezado = new JPanel(new GridLayout(lDatosEncabezado.size(),2));
        pEncabezado.setBackground(new Color(0,0,0,0));
        for(int i=0; i<lDatosEncabezado.size(); i++){
            pEncabezado.add(lDatosEncabezado.get(i));
            pEncabezado.add(tfDatosEncabezado.get(i));
	}
        
        JPanel pNorte = new JPanel(new BorderLayout(0,5));
        pNorte.setBorder(BorderFactory.createEmptyBorder(20,130,0,130));//n,w,s,e
	pNorte.setBackground(new Color(0,0,0,0));
	pNorte.add(pTitulo, BorderLayout.NORTH);
	pNorte.add(pEncabezado, BorderLayout.CENTER);
	
        /* ****************** Parte Central Pestanna */
        JPanel pCentro = new JPanel(new BorderLayout(0,5));
        pCentro.setBorder(BorderFactory.createEmptyBorder(20,80,10,80));//n,w,s,e
        pCentro.setBackground(new Color(0,0,0,0));
        pCentro.add(tf, BorderLayout.CENTER);
	
        /* ****************** Parte Sur Pestanna */
        JPanel pFinFact = new JPanel(new GridLayout(lDatosFinFactura.size(),2));
        pFinFact.setBackground(new Color(0,0,0,0));
        for(int i=0; i<lDatosFinFactura.size(); i++){
            pFinFact.add(lDatosFinFactura.get(i));
            pFinFact.add(tfFinFactura.get(i));
	}
        
        JPanel pBoton = new JPanel(new GridLayout(1,3));
        pBoton.setBorder(BorderFactory.createEmptyBorder(0,130,0,130));//n,w,s,e
	pBoton.setBackground(new Color(0,0,0,0));
	pBoton.add(bFacturar);
        
        JPanel pSur = new JPanel(new BorderLayout(0,10));
        pSur.setBorder(BorderFactory.createEmptyBorder(0,130,20,130));//n,w,s,e
	pSur.setBackground(new Color(0,0,0,0));
	pSur.add(pFinFact, BorderLayout.CENTER);
	pSur.add(pBoton, BorderLayout.SOUTH);
        
        /* ****************** General Pestanna */
	this.add(pNorte, BorderLayout.NORTH);
	this.add(pCentro, BorderLayout.CENTER);
	this.add(pSur, BorderLayout.SOUTH);
    }

    private void facturar() {
        
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        if(ae.getSource()==bFacturar){
            facturar();
	}
    }    
}

